//判断是否点击了 功能模块 true 未点击 false 点击 
var fm = true;
// 判断是否点击了 数据资源 true 未点击 false 点击
var dm = true;
//初始化模块
var initModule = "function";
//功能模块 人员/角色
var grantType_function = "Account";
//数据模块 人员/角色
var grantType_data = "Account";
var i = 0;
$(window).resize(function() {
	$("#resource_mafnage").accordion({
		height : 'auto',
		width:'auto'
	});
	$('#function_module').datagrid("resize", {
		height : 400,
		width:'auto'
	});
//	$('#data_module').treegrid("resize_", {
//		height : 400,
//		width:'auto'
//	});
});

$(function() {
	i=0;
	$("#fn_select_account_ids").val("");
	$("#fn_select_account_names").val("");
	$("#da_select_account_ids").val("");
	$("#da_select_account_names").val("");
	$("#fn_select_role_ids").val("");
	$("#fn_select_role_names").val("");
	$("#da_select_role_ids").val("");
	$("#da_select_role_names").val("");
	// 初始化应用系统
	$.ajax({
        type:'get',
        url:craapphelper_+"?jsoncallback=?",
        dataType:'json',
        async: false,
        success:function(d){
    		for(var i=0;i<d.length;i++){
    			$("#cra_app").get(0).options.add(new Option(d[i].appName,d[i].appCd));
    		}
    		// 只有在应用系统菜单加载完成后才能进行下面的操作
    		$("#resource_mafnage").accordion({
    			onSelect : function(title) {
    				// 判断点击的是那一个层
    				if (title == window_resource_function) {
    					initFunctionModule("function_module","TOPMENU");
    					initModule = "function";
    				} else if (title == window_resource_data) {
    					initDataModule("data_module","TOPDRM");
    					initModule="data";
    				}
    			}
    		});
	    }
	});
});

// 初始化功能模块显示界面
function initFunctionModule(moduleId,type){
	// 判断是否要初始页面
	if(fm){
		var url = retrieveResource_+"?"+accountformatter()+"appCd="+$("#cra_app").val()+"&type="+type+"&grantType="+grantType_function+"&jsoncallback=?";
		$.ajax({
	        type:'get',
	        url:url,
	        dataType:'json',
	        async: false,
	        success:function(datas){
				var d = datas;// 返回json格式结果
				if(d!=null){
					if(d.column!=null){
						var c = d.column;
						var column_ =new Array();
						var column_c = new Array();
						for(var i=0;i<c.length;i++){
							var attr = c[i];
							column_[i] = {field:undToStr(attr["field"],1),title:undToStr(attr["title"],1),width:undToStr(attr["width"],4),hidden:undToStr(attr["hidden"],2),
									formatter:setFormatter(attr["formatter"]),align:undToStr(attr["align"],1),
									rowspan:undToStr(attr["rowspan"],3),colspan:undToStr(attr["colspan"],3)};
						}
						if(d.column_c!=null){
							var ch = d.column_c;
							for(var i=0;i<ch.length;i++){
								var attr = ch[i];
								column_c[i] = {field:undToStr(attr["field"],1),title:undToStr(attr["title"],1),width:undToStr(attr["width"],4),hidden:undToStr(attr["hidden"],2),
										formatter:setFormatter(attr["formatter"]),align:undToStr(attr["align"],1),
										rowspan:undToStr(attr["rowspan"],3),colspan:undToStr(attr["colspan"],3)};
							}
						}
						$('#'+moduleId)
						.treegrid({
							columns:[column_,column_c]
						});
						
						functionModule(moduleId,type);
					}
				}
			}
		});
	}
}

// 功能模块数据初始化
function functionModule(moduleId,type) {
	// 判断是否加载过数据
	if (fm) {
		var count=0;
		var url = retrieveResource_+"?"+accountformatter()+"appCd="+$("#cra_app").val()+"&grantType="+grantType_function+"&jsoncallback=?";
		$('#'+moduleId)
				.treegrid(
						{
							// 如果没有title就不会有表头
							// title : 'TreeGrid',
							// 表头的图标
							// iconCls : 'icon-save',
							// autoRowHeight:false,
							// 宽度
							width : 810,
							// 高度
							height : 400,
							// 真正自动展开/收缩以适应网格的宽度和防止水平滚动列的大小。
							// fitColumns : true,
							// 真正显示在同一行的数据。 设置为true，可以提高加载性能。
							nowrap : true,
							// 是否可以多选 true 单选 false 多选
							singleSelect : true,
							// 是否显示行号 true 显示， false 不显示
							rownumbers : true,
							// 定义当节点展开或折叠时是否显示动画效果
							animate : true,
							collapsible : true,
							url :"",
							// url:url,
							// 标识字段
							idField : 'id',
							// treeField属性以指定那个字段可以收缩和展开：
							treeField : 'id',
							// 和列的特性一样，但是这些列将被冻结在左边。
							frozenColumns : [ [ {
								title : lable_resource_label,
								field : 'id',
								width : 200,
								formatter : function(value,index,row) {
									var info = "";
									if (value != "undefined" && value != null
											&& value != "") {
										if (value.indexOf("_") > 0) {
											info = '<span class="tree-checkbox tree-checkbox0"></span><span style="color:red">'
													+ value + '</span>';
											if (value.split("_")[0]
													.indexOf("ord") == 0) {
												info = info
														+ '<span class="searchbox-button" onclick="search_(\''
														+ value
														+ '\')"></span><span id="search_detail" style="color:#0033FF;cursor:pointer;"></span>';
											}
										} else {
											info = row.name ;
										}
									}
									return info;
								}
							} ] ],
							// 发出一个加载数据的请求前触发，返回 false 就取消加载动作
							onBeforeLoad : function(row, param) {
								var dat = new Date();
								if (row) {
									$(this).treegrid('options').url = url+"&resId="+row.value+"&pid="+row.id+"&dat="+dat+"&type="+row.type+"&grantType="+grantType_function;
								} else {
									if(count==0){
										$(this).treegrid('options').url =  url+"&type="+type;
										count++;
									}else{
										return false;
									}
								}
							},
							toolbar : [ {
								text : button_add,
								iconCls : 'icon-add',
								handler : function() {
								}
							}, {
								text : button_modify,
								iconCls : 'icon-edit',
								handler : function() {
									 $.portalData.setData("0000000000000000000");
								}
							}, {
								text : button_delete,
								iconCls : 'icon-remove',
								handler : function() {
								}
							}, {
								text : button_resource_role,
								iconCls : 'icon-redo',
								handler : function() {
									grantType_function ="Role";
									search_(initRoleInfo_, window_resource_account);
								}
							},{
								text: button_resource_account,
								iconCls:'icon-search',
								handler:function(){
									grantType_function ="Account";
									search_(initAccountInfo_, window_resource_account);
								}
							}]
						});
		fm = false;
	}
}


//初始化数据模块显示界面
function initDataModule(moduleId,type){
	// 判断是否要初始页面
	if(dm){
		var url = retrieveResource_+"?"+accountformatter()+"appCd="+$("#cra_app").val()+"&type="+type+"&grantType="+grantType_data+"&jsoncallback=?";
		$.ajax({
	        type:'get',
	        url:url,
	        dataType:'json',
	        async: false,
	        success:function(datas){
				var d = datas;// 返回json格式结果
				if(d!=null){
					if(d.column!=null){
						var c = d.column;
						var column_ =new Array();
						var column_c = new Array();
						for(var i=0;i<c.length;i++){
							var attr = c[i];
							column_[i] = {field:undToStr(attr["field"],1),title:undToStr(attr["title"],1),width:undToStr(attr["width"],4),hidden:undToStr(attr["hidden"],2),
									formatter:setFormatter(attr["formatter"]),align:undToStr(attr["align"],1),
									rowspan:undToStr(attr["rowspan"],3),colspan:undToStr(attr["colspan"],3)};
						}
						
						if(d.column_c!=null){
							var ch = d.column_c;
							for(var i=0;i<ch.length;i++){
								var attr = ch[i];
								column_c[i] = {field:undToStr(attr["field"],1),title:undToStr(attr["title"],1),width:undToStr(attr["width"],4),hidden:undToStr(attr["hidden"],2),
										formatter:setFormatter(attr["formatter"]),align:undToStr(attr["align"],1),
										rowspan:undToStr(attr["rowspan"],3),colspan:undToStr(attr["colspan"],3)};
							}
						}
						$('#'+moduleId)
						.treegrid({
							columns:[column_,column_c]
						});
						
						dataModule(moduleId,type);
					}
				}
			}
		});
	}
}

// 数据模块
function dataModule(moduleId,type) {
	if (dm) {
		var count=0;
		var url = retrieveResource_+"?"+accountformatter()+"appCd="+$("#cra_app").val()+"&grantType="+grantType_data+"&jsoncallback=?";
		$('#'+moduleId)
				.treegrid(
						{
							// 如果没有title就不会有表头
							// title : 'TreeGrid',
							// 表头的图标
							// iconCls : 'icon-save',
							// autoRowHeight:false,
							// 宽度
							width : 800,
							// 高度
							height : 300,
							// 真正自动展开/收缩以适应网格的宽度和防止水平滚动列的大小。
							// fitColumns : true,
							// 真正显示在同一行的数据。 设置为true，可以提高加载性能。
							nowrap : true,
							// 是否可以多选 true 单选 false 多选
							singleSelect : true,
							// 是否显示行号 true 显示， false 不显示
							rownumbers : true,
							// 定义当节点展开或折叠时是否显示动画效果
							animate : true,
							collapsible : true,
							url :"",
							// url:url,
							// 标识字段
							idField : 'id',
							// treeField属性以指定那个字段可以收缩和展开：
							treeField : 'id',
							// 和列的特性一样，但是这些列将被冻结在左边。
							frozenColumns : [ [ {
								title : lable_resource_label,
								field : 'id',
								width : 200,
								formatter : function(value,index,row) {
									var info = "";
									if (value != "undefined" && value != null
											&& value != "") {
										if (value.indexOf("_") > 0) {
											info = '<span class="tree-checkbox tree-checkbox0"></span><span style="color:red">'
													+ row.name + '</span>';
											if (value.split("_")[0]
													.indexOf("ord") == 0) {
												info = info
														+ '<span class="searchbox-button" onclick="search_(\''
														+ row.name
														+ '\')"></span><span id="search_detail" style="color:#0033FF;cursor:pointer;"></span>';
											}
										} else {
											info =  row.name ;
										}
									}
									return info;
								}
							} ] ],
							// 发出一个加载数据的请求前触发，返回 false 就取消加载动作
							onBeforeLoad : function(row, param) {
								var dat = new Date();
								if (row) {
									if(row.type=="DRM"){
										$(this).treegrid('options').url = url+"&drmId="+row.value+"&dat="+dat+"&type="+row.type+"&pageSize=-1&pid="+row.id;
									}else if(row.type=="DRMVM"){
										var slaDrmId =  $('#'+moduleId).treegrid("getParent",row.id);
										$(this).treegrid('options').url = url+"&drmId="+row.value+"&dat="+dat+"&type="+row.type+"&pageSize=-1&slaDrmId="+slaDrmId.value+"&pid="+row.id;
									}else if(row.type == "DRMPR"){
										var slaDrmId =  $('#'+moduleId).treegrid("getParent",row.id);
										$(this).treegrid('options').url = url+"&drmId="+slaDrmId.value+"&dat="+dat+"&type="+row.type+"&pageSize=-1&priDrmId="+row.value+"&pid="+row.id;
									}else {
										$(this).treegrid('options').url = url+"&resId="+row.value+"&dat="+dat+"&type="+row.type+"&pageSize=-1&pid="+row.id;
									}
									
								} else {
									if(count==0){
										$(this).treegrid('options').url =  url+"&type="+type;
										count++;
									}else{
										return false;
									}
								}
							},
							onBeforeExpand : function(row) {
								var search = $("#fn_select_account_ids").val();
								if (row != 'undefined' && row != null
										&& row != "") {
									if (row.id.indexOf("ord_") == 0
											&& (search == null || search == "")) {
										if ($("#search_detail").html() == "[没有数据]") {
										} else {
											$("#search_detail").html(
													"[请选择查询条件]");
										}
										return false;

									} else if ($("#search_detail").html() == "[没有数据]") {
										return false;
									}
								}
							},
							onContextMenu : function(e, row) {
								e.preventDefault();
								$(this).treegrid('unselectAll');
								$(this).treegrid('select', row.id);
								$('#mm').menu('show', {
									left : e.pageX,
									top : e.pageY
								});
							},
							toolbar:[{
								text:'规则设置',
								iconCls:'icon-redo',
								handler:function(){
								}
							},{
								text:'批量设置',
								iconCls:'icon-redo',
								handler:function(){
								}
							},{
								text:button_resource_role,
								iconCls:'icon-redo',
								handler:function(){
									grantType_data ="Role";
									search_(initRoleInfo_,window_resource_role);
								}
							},{
								text: button_resource_account,
								iconCls:'icon-search',
								handler:function(){
									grantType_data ="Account";
									search_(initAccountInfo_, window_resource_account);
								}
							}]
						});
		dm = false;
	}
}
// 数据结点查询条件
function search_(url,title) {
//	$('#select_account').show();
//	$('#select_account').dialog({
//		// 定义是否显示可折叠按钮
//		collapsible : true,
//		// 定义是否显示最小化按钮
//		minimizable : false,
//		// 定义是否显示最大化按钮
//		maximizable : true,
//		//定义对话框是否可编辑大小
//		//resizable:true,
//		// 锁住窗口
//		modal:true,
//		//closeOnEscape 为true的时候，点击键盘ESC键关闭dialog，
//		closeOnEscape :false,
//		//关闭事件
//		onClose:function(event,ui){
//			$("#account_search").attr("src","");
//			$("#account_search").empty();
//		}
//	});
//	$("#account_search").attr("src",url);
//	$('#select_account').dialog('setTitle',title);
	url ='http://127.0.0.1:8100/portal/ui/workbench/resource/loadHtmlContentByUrl?method=GET&url='+url;
	$.openPortal({
		ticket: "liuhai",
		url: url,
		method: 'post',
		type: 'URL',
		proxyLoad: false,
		model: true,
		maxshow:true,
		minshow:true,
		taskshow:true,
		top:0,
		left:0,
		width:640,
		height:450,
		maximize: false,
		getter:function(data){
		   	//根据选中的模块设置帐户信息
			var info="";
			if(initModule=="function"){
				info ={ids:$("#fn_select_account_ids").val(),names:$("#fn_select_account_names").val(),appCd:$("#cra_app").val()};
			}else if(initModule =="data"){
				info ={ids:$("#da_select_account_ids").val(),names:$("#da_select_account_names").val(),appCd:$("#cra_app").val()};
			}
			// 传入用户ID,和名称
			return info;
		},
		setter:function(data){
			alert( JSON.stringify(data));
			setAccountInfo(data.ids,data.names);
		}
});

}

// 将undefined,null设置为指定类型
// type 1 String 2 boolean
function undToStr(obj,type){
	  if(typeof obj == 'undefined'){
		  obj = "";
	  }
	  if(obj == undefined){
			obj = "";
	  }
	  if(obj == null ||obj ==""){
		  switch(type){
		  case 1:
			  break;
		  case 2:
			  obj = false;
			  break;
		  case 3:
			  obj =1;
			  break;
		  case 4:
			  obj = 80;
			  break;
		  }
	  }
	return obj;
}
function setFormatter(obj){
	  if(typeof obj == 'undefined'){
		  obj = "";
	  }
	  if(obj == undefined){
			obj = "";
	  }
	  if(obj == null || obj ==""){
		 return formatter_;
	  }
	  return formatter;
}
/**
 * 权限显示
 * @param value 
 * @param name
 * @param row
 * @returns {String}
 */
function formatter(value,name,row){
	var index=0;
	var name_="";
	if(name.indexOf(".")==0){
		index = name.substring((name.indexOf("[")+1),name.indexOf("]"));
		name_ = name.substring((name.lastIndexOf("[")+1),name.lastIndexOf("]"));
	}
	var display = false;
	if( row.list[index]!=undefined){
		display = row.list[index]['display'];
	}
	var info ="";
	if(display==true){
		var onchange ='onchange="radioChange(this.value,\''+name_+'\',\''+row.list[index]['acntId']+'\',\''+row.value+'\')"';
		if(value == "Inherited"){
			info = info +'<input type="radio" name="account_'+i+'" value="Inherited" checked="checked" '+onchange+'/>'+lable_permission_inherited;
		}else {
			info = info +'<input type="radio" name="account_'+i+'" value="Inherited" '+onchange+' />'+lable_permission_inherited;
		}
		if(value == "Allowed"){
			info = info +'<input type="radio" name="account_'+i+'" value="Allowed"  checked="checked"  '+onchange+'/>'+lable_permission_allowed;
		}else {
			info = info +'<input type="radio" name="account_'+i+'" value="Allowed"  '+onchange+'/>'+lable_permission_allowed;
		}
		if(value == "Refused"){
			info = info +'<input type="radio" name="account_'+i+'" value="Refused" checked="checked" '+onchange+' />'+lable_permission_refused;
		}else{
			info = info +'<input type="radio" name="account_'+i+'" value="Refused" '+onchange+' />'+lable_permission_refused;
		}
		i++;
		
	}
	return info;
}
function formatter_(value){
	return value;
}
/**
 * 取得选中的帐户信息
 * @returns {___anonymous14947_15059}
 */
function getAccountInfo(){
	//根据选中的模块设置帐户信息
	var info="";
	if(initModule=="function"){
		 info ={ids:$("#fn_select_account_ids").val(),names:$("#fn_select_account_names").val(),appCd:$("#cra_app").val()};
	}else if(initModule =="data"){
		info ={ids:$("#da_select_account_ids").val(),names:$("#da_select_account_names").val(),appCd:$("#cra_app").val()};
	}
	// 传入用户ID,和名称
	return info;
}
/**
 * 设置选择的帐户
 * @param ids选中帐户ID
 * @param names 选中帐户名称
 */
function setAccountInfo(ids,names){
	//$('#select_account').dialog('close');
	$("#account_search").attr("src","");
	$("#account_search").empty();
	if(initModule=="function"){
		$("#fn_select_account_ids").val(ids);
		$("#fn_select_account_names").val(names);
		fm = true;
		initFunctionModule("function_module","TOPMENU");
	}else if(initModule =="data"){
		$("#da_select_account_ids").val(ids);
		$("#da_select_account_names").val(names);
		dm = true;
		initDataModule("data_module","TOPDRM");
	}

}

/**
 * 取得选中的角色信息
 * @returns {___anonymous14947_15059}
 */
function getRoleInfo(){
	//根据选中的模块设置帐户信息
	var info="";
	if(initModule=="function"){
		 info ={ids:$("#fn_select_role_ids").val(),names:$("#fn_select_role_names").val(),appCd:$("#cra_app").val()};
	}else if(initModule =="data"){
		info ={ids:$("#da_select_role_ids").val(),names:$("#da_select_role_names").val(),appCd:$("#cra_app").val()};
	}
	// 传入用户ID,和名称
	return info;
}
/**
 * 设置选择的角色
 * @param ids选中帐户ID
 * @param names 选中帐户名称
 */
function setRoleInfo(ids,names){
	$('#select_account').dialog('close');
	$("#account_search").attr("src","");
	$("#account_search").empty();
	if(initModule=="function"){
		$("#fn_select_role_ids").val(ids);
		$("#fn_select_role_names").val(names);
		fm = true;
		initFunctionModule("function_module","TOPMENU");
	}else if(initModule =="data"){
		$("#da_select_role_ids").val(ids);
		$("#da_select_role_names").val(names);
		dm = true;
		initDataModule("data_module","TOPDRM");
	}

}
/**
 * 应用系统改变事件
 */
function craAppChange(){
	fm = true;
	initFunctionModule("function_module","TOPMENU");
	dm= true;
	initDataModule("data_module","TOPDRM");
}
/**
 * 帐户参数
 * @param accountIds
 * @returns {String}
 */
function accountformatter(){
	//返回信息
	var res_info="";
	var infoId = "";
	
	if(initModule=="function"){
		//账户
		if(grantType_function=="Account"){
			infoId = "accountId";
			id = 'fn_select_account_ids';
		}
		//角色
		if(grantType_function=="Role" ){
			infoId = "roleId";
			id ='fn_select_role_ids';
		}
	}else{
		//账户
		if(grantType_data =="Account"){
			infoId = "accountId";
			id = 'da_select_account_ids';
		}
		//角色
		if(grantType_data =="Role"){
			infoId = "roleId";
			id ='da_select_role_ids';
		}
	}
	var ids = $("#"+id).val();
	
	if(ids!=""){
		ids = ids.substring(0,ids.length-1);
	}
	var ids_ = ids.split(",");
	for(var i=0;i<ids_.length;i++){
		res_info = res_info+infoId+"="+ids_[i]+"&";
	}
	return res_info;
}

/**
 * 权限修改
 * @param val 权限的值
 * @param type 权限
 * @param accountid 账户id
 * @param menuid 菜单id
 * 
 */
function radioChange(val,type,accountid,resourceId){
	var url = editpermissions_+"?resourceId="+resourceId+"&accountId="+accountid+"&permission="+val+"&right="+type+"&grantType="+grantType_function+"&jsoncallback=?";
	$.post(url, {} ,function(d) {
	}, 'json');
}
